Skip to content

feat: render Q10 map obstacle markers - #938

Open
hCoureau wants to merge 16 commits into
Python-roborock:mainfrom
hCoureau:feat/q10-obstacles
Open

hCoureau wants to merge 16 commits into
Python-roborock:mainfrom
hCoureau:feat/q10-obstacles

Conversation

@hCoureau

@hCoureau hCoureau commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Summary

  • parse bounded Q10 obstacle and skip-point tables
  • expose obstacle positions for current, saved, and clean-history maps
  • render calibrated, position-only obstacle markers on Q10 maps
  • avoid inferring obstacle types or photo metadata that the packet does not provide

Important

Depends on #937 and #936. Archive obstacles and skip-point tables are preserved with Q10CleanRecordDetail composition. Current upstream is integrated. This branch also includes the separate upstream conformance fix #965 (issue #964); merge that fix first.

Design against the #933 review priorities

  • End-user API: existing live, saved-map and clean-history traits expose typed position-only obstacles; unsupported type/photo metadata is not invented.
  • Trait lifecycle: obstacles belong to their received map packet, so no additional pending or cross-session trait state is introduced.
  • Parser boundary: the parser produces Q10Obstacle values and the traits only expose defensive list copies; rendering consumes the same typed values.
  • Parser internals: obstacle and skip-point counts, coordinates and truncated tails are parsed defensively with explicit bounds and focused tests.

Validation

  • 1006 passed, including 92 snapshot tests
  • all pre-commit hooks passed
  • package build passed

The implementation was also exercised against a physical Roborock Q10 S5 using position-only obstacle data. No private map captures or account data are included.

Related work

Latest maintenance validation

@lboue

lboue commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

@hCoureau Could you fix the conflict?

@hCoureau

hCoureau commented Sep 8, 2026

Copy link
Copy Markdown
Contributor Author

Resolved the merge conflicts with current main in ded170d by merging main and retaining its accepted 30-second Q10 CLI map-push timeout. The PR's feature changes are preserved. GitHub now reports this PR as conflict-free, and it remains ready for review.

Validation: 1,026 tests passed, 92 snapshots passed, all pre-commit hooks passed, and sdist/wheel builds passed. GitHub CI was triggered for the new head. Required maintainer approval still applies.

The existing stacked dependencies on #936 and #937 still apply; this update does not bypass their review or merge order. Conflict resolution and validation performed with OpenAI Codex assistance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants